public class BookList {
	private int top;

	/**
	 * @return the top
	 */
	public int getTop() {
		return top;
	}

	private Book[] items;

	/**
	 * @return the items
	 */
	public Book[] getItems() {
		return items;
	}

	public BookList() {
		this.top = 0;
		this.items = new Book[10];
	}

	public BookList(int len) {
		this.top = 0;
		if (len > 0) {
			this.items = new Book[len];
		} else {
			this.items = new Book[10];
		}
	}

	/**
	 * 
	 * @param id
	 *            对象的id
	 * @return id对应的索引位置，-1表示不存在
	 */

	private int indexOf(int id) {
		int index = -1;
		for (int i = 0; i < top; i++) {
			if (items[i].id == id) {
				index = i;
			}
		}
		return index;
	}

	/**
	 * 
	 * @param book
	 *            待插入的对象
	 * @return 成功，-1编号存在 -2数组满了
	 */
	public int add(Book book) {
		if (items.length == this.top) {
			return -2;
		}
		if (indexOf(book.id) == -1) {
			items[this.top] = book;
			this.top++;
			return 0;
		} else {
			return -1;
		}
	}

	/**
	 * 
	 * @param book
	 *            待插入的对象
	 * @param index
	 *            指定索引位置
	 * @return 0成功，-1编号存在 -2数组满了，-3index索引位置无效
	 */
	public int add(Book book, int index) {
		if (index > this.top) {
			return -3;
		} else if (items.length == this.top) {
			return -2;
		}
		if (indexOf(book.id) == -1) {
			for (int i = this.top; i > index; i--) {
				items[i] = items[i - 1];
			}
			items[index] = book;
			this.top++;
			return 0;
		} else {
			return -1;
		}
	}

	/**
	 * 
	 * @param id
	 *            删除编号为id的图书
	 * @return true成功 false失败id不存在
	 */
	public boolean delete(int id) {
		int index = indexOf(id);// id对应的索引位置
		if (index == -1) {
			return false;
		} else {
			for (int i = index; i < top - 1; i++) {
				items[i] = items[i + 1];
			}
			this.top--;
			return true;
		}
	}

	/**
	 * 
	 * @param id
	 *            待更新对象的id
	 * @param newPrice
	 *            要更新的价格
	 * @return 是否更新成功
	 */
	public boolean update(int id, double newPrice) {
		int index = indexOf(id);
		if (index > -1) {
			items[index].price = newPrice;
			return true;
		} else {
			return false;
		}
	}
}
